package dao

import (
	"go-learn/global"
	"time"
)

func Set(key string, value interface{}, expire int) error {
	/*
		有效期为0表示不设置有效期，非0表示经过该时间后键值对失效
		time.Duration其实也是int64，不过是int64的别名罢了，但这里如果expire使用int64也无法与time.Second运算，
		因为int64和Duration虽然本质一样，但表面上属于不同类型，go语言中不同类型是无法做运算的
	*/
	err := global.GvaRedis.Set(key, value, time.Duration(expire)*time.Second).Err()
	return err
}
func Get(key string) (interface{}, error) {
	value, err := global.GvaRedis.Get(key).Result()
	return value, err
}
func MSet(pairs ...interface{}) error {
	err := global.GvaRedis.MSet(pairs...).Err()
	return err
}
func MGet(keys ...string) ([]interface{}, error) {
	value, err := global.GvaRedis.MGet(keys...).Result()
	return value, err
}

/*
	Del和Move的区别:Move移动当前键值到指定数据库,而Del可以删除默认数据库的多个键值,格式为key1,key2,....
*/
func Del(keys ...string) error {
	// exists方法存在返回1,不存在返回0
	err := global.GvaRedis.Del(keys...).Err()
	return err
}
